<?php

namespace App\Exceptions\Response\Service;

use App\Exceptions\Response\CodeInterface;

/**
 * 业务逻辑异常 Code
 */
class ServiceCode implements CodeInterface
{

    /**
     * （业务逻辑错误）默认错误
     */
    const SERVICE_CODE = 43000;

    /* 其他错误 */
    /**
     * （参数错误）其他错误
     */
    const SERVICE_PARAM_INVALID = 43001;

    /* 不存在错误 */
    /**
     * （数据不存在）不存在错误
     */
    const SERVICE_DATA_NOT_EXIST = 43010;

    /**
     * （用户不存在）不存在错误
     */
    const SERVICE_USER_NOT_EXIST = 43101;

    /* 存在错误 */
    /**
     * （数据已存在）存在错误
     */
    const SERVICE_DATA_EXISTED = 43020;

    /* 操作错误 */
    /**
     * （保存失败）操作错误
     */
    const SERVICE_ACTION_SAVE_ERROR = 43030;

    /* Oauth模块 */
    /**
     * 用户被禁用
     */
    const SERVICE_USER_STOP = 43102;

    /**
     * 密码错误
     */
    const SERVICE_USER_WRONG_PASSWORD = 43202;

    /**
     * 登录失败
     */
    const SERVICE_USER_LOGIN_FAIL = 43103;

    /**
     *access_token为空
     */
    const SERVICE_OAUTH_ACCESS_TOKEN_IS_NULL = 43104;

    /**
     *invalid_scope
     */
    const SERVICE_OAUTH_INVALID_SCOPE = 43105;

    /**
     * access_token 过期
     */
    const SERVICE_OAUTH_ACCESS_TOKEN_DATED = 43106;

    /**
     *生成access_token失败
     */
    const SERVICE_OAUTH_CREATE_ACCESS_TOKEN_FAIL = 43107;

    /**
     * APP_KEY 参数传入错误
     */
    const SERVICE_OAUTH_APP_KEY_NOT_EXIST = 43108;

    /**
     * 参数不存在
     */
    const SERVICE_OAUTH_VALUE_NOT_EXIST = 43109;

    /**
     * unsupported_grant_type
     */
    const SERVICE_OAUTH_AUTHORIZATION_CODE_NO_SUPPORTED = 43110;

    /**
     * redirect_URI不匹配
     */
    const SERVICE_OAUTH_REDIRECT_MISMATCH = 43111;

    /**
     * 用户不存在
     */
    const SERVICE_OAUTH_USER_NOT_EXIST = 43112;

    /**
     * code_data不存在
     */
    const SERVICE_OAUTH_CODE_DATA_EMPTY = 43113;

    /**
     * code不匹配
     */
    const SERVICE_OAUTH_CODE_IS_WRONG = 43114;

    /**
     * 不支持该授权类型
     */
    const SERVICE_OAUTH_RESPONSE_TYPE_IS_NOT_SUPPORTED = 43115;

    /**
     * app_secret不正确
     */
    const SERVICE_OAUTH_APP_SECRET_WRONG = 43116;

    /**
     * 刷新access_token失败
     */
    const SERVICE_OAUTH_ACCESS_TOKEN_REFRESH_FAIL = 43117;

    /**
     * access_token 错误
     */
    const SERVICE_OAUTH_ACCESS_TOKEN_IS_ERROR = 43118;

    /**
     * refresh_token 参数错误
     */
    const SERVICE_OAUTH_REFRESH_TOKEN_IS_ERROR = 43119;

    /**
     * 短信验证码错误
     */
    const SERVICE_OAUTH_MESSAGE_CODE_IS_ERROR = 43120;

    /**
     * 短信验证码过期
     */
    const SERVICE_OAUTH_MESSAGE_CODE_IS_DATED = 43121;

    /**
     * 用户名长度不对
     */
    const SERVICE_OAUTH_USERNAME_LENGTH_IS_WRONG = 43122;

    /**
     * 用户名不能为纯数字
     */
    const SERVICE_OAUTH_USERNAME_ISNOT_ALL_NUMBER = 43123;

    /**
     * 用户名被占用
     */
    const SERVICE_OAUTH_USERNAME_IS_USERD = 43124;

    /**
     * 手机号格式错误
     */
    const SERVICE_OAUTH_MOBILE_FORMAT_IS_WRONG = 43125;

    /**
     * 密码格式错误
     */
    const SERVICE_OAUTH_PASSWORD_FORMAT_IS_WRONG = 43126;

    /**
     * 手机已经被使用
     */
    const SERVICE_OAUTH_MOBILE_IS_USERD = 43127;

    /**
     * 发送短信间隔时间小于60秒
     */
    const SERVICE_OAUTH_SENDTIME_IS_SHORT = 43128;

    /**
     * 一天内注册过多
     */
    const SERVICE_OAUTH_ONEDAT_REGIST_IS_MORE = 43129;

    /**
     * 发送验证码过多
     */
    const SERVICE_OAUTH_SENDCODE_IS_MORE = 43130;

    /**
     * 发送验证码失败
     */
    const SERVICE_OAUTH_SENDCODE_IS_FAIL = 43131;

    /**
     * 验证码错误
     */
    const SERVICE_OAUTH_VERIFY_CODE_WRONG = 43132;

    /**
     * 验证码不能为空
     */
    const SERVICE_OAUTH_VERIFY_CODE_IS_NOT_NULL = 43133;

    /**
     * 该手机尚未被注册，请前往注册
     */
    const SERVICE_OAUTH_MOBILE_IS_NOT_USERD = 43134;

    /**
     * 修改密码失败
     */
    const SERVICE_OAUTH_CHANGE_PASSWORD_FAIL = 43135;

    /**
     * 第3方帐号绑定，已经绑定
     */
    const SERVICE_OAUTH_BONDED = 43136;

    /**
     * 第3方帐号绑定失败
     */
    const SERVICE_OAUTH_BONDED_FAIL = 43137;

    /**
     * 设置用户信息失败
     */
    const SERVICE_OAUTH_SET_AVATAR_FAIL = 43138;

    private static $MESSAGE_TEXT = [
        /* 默认错误 */
        self::SERVICE_CODE => '业务逻辑错误',

        /* 其他错误 */
        self::SERVICE_PARAM_INVALID => '参数错误',

        /* 不存在错误 */
        self::SERVICE_DATA_NOT_EXIST => '数据不存在',
        self::SERVICE_USER_NOT_EXIST => '用户不存在',

        /* 存在错误 */
        self::SERVICE_DATA_EXISTED => '数据已存在',

        /* 操作错误 */
        self::SERVICE_ACTION_SAVE_ERROR => '保存失败',

        /* Oauth模块 */
        self::SERVICE_USER_STOP => '用户被禁用',
        self::SERVICE_USER_WRONG_PASSWORD => '密码错误',
        self::SERVICE_USER_LOGIN_FAIL => '登录失败',
        self::SERVICE_OAUTH_ACCESS_TOKEN_IS_NULL => 'ACCESS_TOKEN 为空',
        self::SERVICE_OAUTH_INVALID_SCOPE => '申请权限的范围不符合',
        self::SERVICE_OAUTH_ACCESS_TOKEN_DATED => 'accessToken 过期',
        self::SERVICE_OAUTH_CREATE_ACCESS_TOKEN_FAIL => '生成access_token失败',
        self::SERVICE_OAUTH_APP_KEY_NOT_EXIST => 'APP_KEY 参数错误',
        self::SERVICE_OAUTH_VALUE_NOT_EXIST => '缺少参数',
        self::SERVICE_OAUTH_AUTHORIZATION_CODE_NO_SUPPORTED => '不支持该授权模式',
        self::SERVICE_OAUTH_REDIRECT_MISMATCH => 'redirect uri 不匹配',
        self::SERVICE_OAUTH_USER_NOT_EXIST => '用户不存在',
        self::SERVICE_OAUTH_CODE_DATA_EMPTY => 'code_data不存在',
        self::SERVICE_OAUTH_CODE_IS_WRONG => '授权码code不匹配',
        self::SERVICE_OAUTH_RESPONSE_TYPE_IS_NOT_SUPPORTED => '不支持该授权类型',
        self::SERVICE_OAUTH_APP_SECRET_WRONG => 'app_secret不正确',
        self::SERVICE_OAUTH_ACCESS_TOKEN_REFRESH_FAIL => '刷新access_token失败',
        self::SERVICE_OAUTH_ACCESS_TOKEN_IS_ERROR => 'access_token参数错误',
        self::SERVICE_OAUTH_REFRESH_TOKEN_IS_ERROR => 'refresh_token 参数错误',
        self::SERVICE_OAUTH_MESSAGE_CODE_IS_ERROR => '短信验证码错误',
        self::SERVICE_OAUTH_MESSAGE_CODE_IS_DATED => '短信验证码过期',
        self::SERVICE_OAUTH_USERNAME_LENGTH_IS_WRONG => '用户名长度不能小于3且大于15！',
        self::SERVICE_OAUTH_USERNAME_ISNOT_ALL_NUMBER => '用户名不能为纯数字！',
        self::SERVICE_OAUTH_USERNAME_IS_USERD => '用户名被占用,请换一个！',
        self::SERVICE_OAUTH_MOBILE_FORMAT_IS_WRONG => '手机号错误',
        self::SERVICE_OAUTH_PASSWORD_FORMAT_IS_WRONG => '密码长度不在6~16之间',
        self::SERVICE_OAUTH_MOBILE_IS_USERD => '该手机已被使用',
        self::SERVICE_OAUTH_SENDTIME_IS_SHORT => '距离上次发送不足60秒，请稍后再次尝试。',
        self::SERVICE_OAUTH_ONEDAT_REGIST_IS_MORE => '一天之内注册过多，请休息一下吧。',
        self::SERVICE_OAUTH_SENDCODE_IS_MORE => '发送验证码过多',
        self::SERVICE_OAUTH_SENDCODE_IS_FAIL => '发送验证码失败',
        self::SERVICE_OAUTH_VERIFY_CODE_WRONG => '验证码错误',
        self::SERVICE_OAUTH_VERIFY_CODE_IS_NOT_NULL => '验证码不能为空',
        self::SERVICE_OAUTH_MOBILE_IS_NOT_USERD => '该手机尚未被注册',
        self::SERVICE_OAUTH_CHANGE_PASSWORD_FAIL => '修改密码失败',
        self::SERVICE_OAUTH_BONDED =>'该帐号已绑定，是否仍然绑定？',
        self::SERVICE_OAUTH_BONDED_FAIL=>'帐号绑定失败',
        self::SERVICE_OAUTH_SET_AVATAR_FAIL=>'设置用户信息失败',


    ];

    public static function getMessageText($code)
    {
        return isset(self::$MESSAGE_TEXT[$code]) ? self::$MESSAGE_TEXT[$code] : self::$MESSAGE_TEXT[self::SERVICE_CODE];
    }

    public static function hasInArray($code)
    {
        return isset(self::$MESSAGE_TEXT[$code]) ? true : false;
    }
}